#ifndef MT6816_H
#define MT6816_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stdbool.h"
#include "sys.h"

/********** MT6816 **********/
//MT6816_SPI采集(GPIO)
//MT6816_CS->PA4
#define MT6816_SPI_CS_PORT					(GPIOA)
#define MT6816_SPI_CS_PIN	 					(GPIO_Pin_4)
//MT6816_SPI采集(AFIO & SPI)
//SPI1_SCK->PA5
#define MT6816_SPI_CLK_PORT					(GPIOA)
#define MT6816_SPI_CLK_PIN					(GPIO_Pin_5)
//SPI1_MISO->PA6
#define MT6816_SPI_MISO_PORT				(GPIOA)
#define MT6816_SPI_MISO_PIN 				(GPIO_Pin_6)
//SPI1_MOSI->PA7
#define MT6816_SPI_MOSI_PORT				(GPIOA)
#define MT6816_SPI_MOSI_PIN 				(GPIO_Pin_7)
//SPI1
#define MT6816_SPI_Get_SPI					(SPI1)

#define	MT6816_SPI_Prescaler				(SPI_BaudRatePrescaler_8)//SPI1_8分频_8M

typedef struct{
	//采集数据
	uint16_t	sample_data;	//SPI读取到的数据
	//输出数据
	uint16_t	angle;				//SPI输出的角度
	bool			no_mag_flag;	//磁铁数据有效标志
	bool			pc_flag;			//奇偶校验位
}MT6816_SPI_Signal_Typedef;

//MT6816_SPI
void MT6816_SPI_Signal_Init(void);		//MT6816_SPI采集初始化
void MT6816_SPI_Get_AngleData(void);	//MT6816_SPI采集获取角度数据

typedef struct{
	uint16_t	angle_data;				//角度数据
	uint16_t	rectify_angle;		//校准的角度数据
	bool			rectify_valid;		//校准数据有效标志
}MT6816_Typedef;
extern MT6816_Typedef	mt6816;

//MT6816
void MT6816_Init(void);							//MT6816初始化
void MT6816_Get_AngleData(void);		//MT6816获取角度数据

#ifdef __cplusplus
}
#endif
	 
#endif
